export const NoFlags = 0b00000000000000000000,
    Placement = 0b0000000000000000000010,
    Update = 0b0000000000000000000100,
    Deletion = 0b0000000000000000001000;

function isFn(fn) {
    return typeof fn === 'function'
}
function isStr(s) {
    return typeof s === 'string'
}

function isStrOrNumber(s) {
    return typeof s === 'string' || typeof s === 'number'
}
function updateNode(node, preVal, nextVal) {
    // 清空上次的属性
    Object.keys(preVal).forEach(k => {
        if (k === 'children') {
            if (isStrOrNumber(preVal[k])) {
                node.textContent = ''
            }
        } else if (k.slice(0, 2) === 'on') {
            // 简单粗暴的事件处理
            const event = k.slice(2).toLocaleLowerCase()
            node.removeEventListener(event, preVal[k])
        } else {
            // 这里没做处理，className 是如何变为class的？
            node[k] = ''
        }
    })
    // 更新本次的属性
    Object.keys(nextVal).forEach(k => {
        if (k === 'children') {
            if (isStrOrNumber(nextVal[k])) {
                node.textContent = nextVal[k]
            }
        } else if (k.slice(0, 2) === 'on') {
            // 简单粗暴的事件处理
            const event = k.slice(2).toLocaleLowerCase()
            node.addEventListener(event, nextVal[k])
        } else {
            // 这里没做处理，className 是如何变为class的？
            node[k] = nextVal[k]
        }
    })
}
export { isStr, isStrOrNumber, updateNode, isFn }